package com.boboPlanet.comm.sensitive;

/**
 * @Description: TODO 脱敏注解
 * @Author: mis_wu
 * @Date: 2023/7/18
 **/

import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
// 作用在字段上
@Target(ElementType.FIELD)
// class文件中保留，运行时也保留，能通过反射读取到
@Retention(RetentionPolicy.RUNTIME)
// 表示自定义自己的注解SensitiveMark
@JacksonAnnotationsInside
@JsonSerialize(using = SensitiveSerializer.class) // 该注解使用序列化的方式
public @interface SensitiveMark {

    /**
     * 指定脱敏数据类型
     */
    SensitiveTypeEnum type() default SensitiveTypeEnum.NO_MARK;

    /**
     * 前置 不需要打码的长度
     */
    int prefixNoMaskLen() default 1;

    /**
     * 后置 不需要打码的长度
     */
    int suffixNoMaskLen() default 1;

    /**
     * 用什么打码（符号）
     */
    String symbol() default "*";

}
